// 实现数组和对象的浅拷贝
function shallowCopy(obj) {
  // 只拷贝数组和对象
  if (!obj || typeof obj !== 'object') {
    return obj;
  }
  // 根据输入类型判断新建一个数组还是对象
  let newObj = Array.isArray(obj) ? [] : {};
  // 遍历object,并且判断是否属于自己的属性才拷贝
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      newObj[key] = obj[key];
    }
  }
  return newObj;
}

// 测试
var obj = {
  id: 1,
  name: 'andy',
  msg: {
    age: 18
  },
  color: ['pink', 'red']
};

var objcopy = shallowCopy(obj);
console.log(obj);
objcopy.msg.age = 20;
console.log(obj);
console.log(objcopy);

let objcopy2 = {};
Object.assign(objcopy2, obj);
console.log(objcopy2);